/*
 * @Description:
 * @Autor: Bingo
 * @Date: 2022-12-12 09:48:36
 * @LastEditors: Bingo
 * @LastEditTime: 2024-07-23 10:56:45
 */
import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
// 按需加载组件库
import compression from 'vite-plugin-compression';
// jsx插件
import vueJsx from "@vitejs/plugin-vue-jsx";
// 这里需要下载types/nodes 声明
import { resolve } from "path";
import legacyPlugin from "@vitejs/plugin-legacy";
import postCssPxToRem from "postcss-pxtorem";
import vueSetupExtend from 'vite-plugin-vue-setup-extend'
// https://vitejs.dev/config/
export default defineConfig({
  // 开启热更新
  server: {
    open: true,
    port: 8086, // 将此处的3000替换为您所需的端口号
  },
  plugins: [
    vue(),
    vueJsx(),
    vueSetupExtend(),
    legacyPlugin({
      targets: ["chrome 52"], // 需要兼容的目标列表，可以设置多个
      additionalLegacyPolyfills: ["regenerator-runtime/runtime"], // 面向IE11时需要此插件
    }),
    compression({
      verbose: true, // 显示压缩过程中的详细信息
      disable: false, // 不禁用压缩
      threshold: 10240, // 只有大小超过10KB的文件才会被压缩
      algorithm: 'gzip', // 使用gzip压缩算法
      ext: '.gz' // 压缩后的文件扩展名
    })
  ],
  resolve: {
    // 配置别名
    alias: [{ find: "@", replacement: resolve(__dirname, "src") }],
  },
  build: {
    assetsDir: "assets", // 指定生成静态文件目录
    target: ["chrome52"],
    cssTarget: ["chrome52"],
  },
  experimental: {
    renderBuiltUrl(
      filename: string,
      {
        hostId,
        hostType,
        type,
      }: {
        hostId: string;
        hostType: "js" | "css" | "html";
        type: "public" | "asset";
      }
    ) {
      if (type === "public") {
        return { relative: true };
      } else {
        return "/app/" + filename;
      }
    },
  },
  css: {
    postcss: {
      plugins: [
        postCssPxToRem({
          rootValue: 37.5, // 1rem的大小(设计稿宽度的1/10)
          propList: ["*"], // 需要转换的属性，这里选择全部都进行转换
        }),
      ],
    },
  },
});
